merge queue: embarking main (7c5dc38), #2113 and #2112 together#2118
Closed
mergify[bot] wants to merge 15 commits intomainfrom
Closed
merge queue: embarking main (7c5dc38), #2113 and #2112 together#2118mergify[bot] wants to merge 15 commits intomainfrom
mergify[bot] wants to merge 15 commits intomainfrom
Conversation
…chain_reorg test from 430 to 126 seconds
…tests from 565 to 480 seconds by replacing hardcoded sleeps with polling
…tests from 480 to 450 secs by replacing fixed sleeps with block polling in slow lane tests
Add `cbor_metadata = false` and `bytecode_hash = 'none'` to both host-contracts and gateway-contracts foundry.toml. This strips compiler metadata from deployed bytecode, making bytecode comparison across branches reliable for upgrade hygiene checks. Also add OZ remappings to gateway-contracts for Foundry compatibility.
New workflow + Bun/TypeScript script that compares deployed bytecode
between main and PR for every contract in upgrade-manifest.json.
When bytecode changes, the check enforces:
- REINITIALIZER_VERSION must be bumped
- A reinitializeV{N-1}() function must exist (not just commented out)
- At least one of MAJOR/MINOR/PATCH_VERSION must be bumped
When bytecode is unchanged, spurious REINITIALIZER_VERSION bumps are
flagged. Uses matrix strategy for host-contracts and gateway-contracts.
Addresses are generated via `make ensure-addresses` (same as upgrade tests).
Compare PR bytecode against UPGRADE_FROM_TAG (v0.11.0) instead of main. This avoids unnecessary reinitializer bumps when multiple PRs modify the same contract between deployments — only the first change after a release requires a bump. Keeps the tag in sync with *-upgrade-tests.yml workflows.
When comparing against the v0.11.0 baseline, forge tries to compile all .sol files including ones that were deleted in the PR (e.g. MultichainACLChecks.sol). These reference removed address constants and break compilation of unrelated contracts like GatewayConfig, causing false positives. Strip deleted files from the baseline before compiling.
When forge can't compile the baseline (e.g. deleted contracts break unrelated imports), compare source files directly instead of blindly treating all contracts as changed. If the contract source is identical between baseline and PR, bytecode is unchanged — no version bump needed. Fixes false positive for GatewayConfig which is unchanged since v0.11.0 but couldn't be compiled because MultichainACLChecks.sol (deleted in PR) was still imported by other v0.11.0 files.
When comparing bytecode between the baseline tag and the PR, both sides must compile with identical address constants (they're embedded in bytecode). Previously we generated addresses only on the PR side and copied them to the baseline. This broke when contracts were removed between versions — the baseline still had source files importing the deleted constant, causing forge compilation to fail for the entire project, including unrelated unchanged contracts. Add ci/merge-address-constants.ts: generates addresses on both sides independently, then merges them. PR values win for shared constants, baseline-only constants (removed contracts) are preserved so the baseline compiles, and PR-only constants (new contracts) are preserved so the PR compiles. Reverts the source-comparison fallback in check-upgrade-hygiene.ts — both sides now compile successfully so we always compare real bytecode.
Rename workflow, script, job names, and all references from the ambiguous "upgrade hygiene" to the descriptive "upgrade version check".
3 tasks
Changed Lines CoverageCoverage of added/modified lines: N/A Per-file breakdownDiff CoverageDiff: origin/main...HEAD, staged and unstaged changesNo lines with coverage information in this diff. |
Author
🧪 CI InsightsHere's what we observed from your CI run for 0b77245. 🟢 All jobs passed!But CI Insights is watching 👀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎉 This pull request has been checked successfully and will be merged soon. 🎉
Branch main (7c5dc38), #2113 and #2112 are embarked together for merge.
This pull request has been created by Mergify to speculatively check the mergeability of #2112.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.
Required conditions of queue
mainfor merge:#approved-reviews-by >= 1[🛡 GitHub branch protection]#changes-requested-reviews-by = 0[🛡 GitHub branch protection]#review-threads-unresolved = 0[🛡 GitHub branch protection]branch-protection-review-decision = APPROVED[🛡 GitHub branch protection]check-success = run-e2e-tests / fhevm-e2e-testcheck-success = common-pull-request/lint (bpr)check-neutral = common-pull-request/lint (bpr)check-skipped = common-pull-request/lint (bpr)check-skipped = coprocessor-cargo-listener-tests/cargo-tests (bpr)check-neutral = coprocessor-cargo-listener-tests/cargo-tests (bpr)check-success = coprocessor-cargo-listener-tests/cargo-tests (bpr)check-success = coprocessor-cargo-test/cargo-tests (bpr)check-neutral = coprocessor-cargo-test/cargo-tests (bpr)check-skipped = coprocessor-cargo-test/cargo-tests (bpr)check-success = coprocessor-dependency-analysis/dependencies-check (bpr)check-neutral = coprocessor-dependency-analysis/dependencies-check (bpr)check-skipped = coprocessor-dependency-analysis/dependencies-check (bpr)check-success = gateway-contracts-deployment-tests/sc-deploy (bpr)check-neutral = gateway-contracts-deployment-tests/sc-deploy (bpr)check-skipped = gateway-contracts-deployment-tests/sc-deploy (bpr)check-skipped = kms-connector-tests/test-connector (bpr)check-neutral = kms-connector-tests/test-connector (bpr)check-success = kms-connector-tests/test-connector (bpr)Required conditions to stay in the queue:
#approved-reviews-by >= 1[🛡 GitHub branch protection]#changes-requested-reviews-by = 0[🛡 GitHub branch protection]#review-threads-unresolved = 0[🛡 GitHub branch protection]base = mainbranch-protection-review-decision = APPROVED[🛡 GitHub branch protection]label!=do-not-mergecheck-success = common-pull-request/lint (bpr)check-neutral = common-pull-request/lint (bpr)check-skipped = common-pull-request/lint (bpr)check-skipped = coprocessor-cargo-listener-tests/cargo-tests (bpr)check-neutral = coprocessor-cargo-listener-tests/cargo-tests (bpr)check-success = coprocessor-cargo-listener-tests/cargo-tests (bpr)check-skipped = coprocessor-cargo-test/cargo-tests (bpr)check-neutral = coprocessor-cargo-test/cargo-tests (bpr)check-success = coprocessor-cargo-test/cargo-tests (bpr)check-skipped = coprocessor-dependency-analysis/dependencies-check (bpr)check-neutral = coprocessor-dependency-analysis/dependencies-check (bpr)check-success = coprocessor-dependency-analysis/dependencies-check (bpr)check-success = gateway-contracts-deployment-tests/sc-deploy (bpr)check-neutral = gateway-contracts-deployment-tests/sc-deploy (bpr)check-skipped = gateway-contracts-deployment-tests/sc-deploy (bpr)check-skipped = kms-connector-tests/test-connector (bpr)check-neutral = kms-connector-tests/test-connector (bpr)check-success = kms-connector-tests/test-connector (bpr)